import Vue from 'vue';
import App from './App.vue';

// 引入路由;
import router from '@/router';
// 引入三级联动组件--全局注册
import TypeNav from '@/components/TypeNav';

// 引入轮播图组件 全局注册
import Carsousel from '@/components/Carousel';

// 引入分页组件  全局注册
import Pagination from '@/components/Pagination'

// 第一个参数：全局组件的名字  第二个参数：哪一个组件
Vue.component(TypeNav.name, TypeNav);

Vue.component(Carsousel.name, Carsousel);

Vue.component(Pagination.name, Pagination);
// 引入vuex 仓库
import store from '@/store';

// 引入mock 模拟数据
import '@/mock/mockServe';

// 引入swiper样式;
import 'swiper/css/swiper.css';

// 引入统一api文件夹里面全部请求函数
import * as API from '@/api'

import ljz from '@/assets/1.gif'
// 引入图片懒加载插件
import Vuelazyload from 'vue-lazyload'
// 注册插件
Vue.use(Vuelazyload, {
  // 懒加载默认的图片
  loading: ljz
})

// 引入表单校验插件
import '@/urils/validate'

// 按需引入element组件
import { Button, MessageBox } from 'element-ui'
Vue.component(Button.name, Button)
// 注册全局组件
Vue.prototype.$msgbox = MessageBox
// elementUI注册组件的时候，还有一种写法，挂在原型上
Vue.prototype.$alert = MessageBox.alert
Vue.config.productionTip = false

new Vue({
  render: h => h(App),
  // 全局事件总线$bus配置
  beforeCreate() {
    Vue.prototype.$bus = this
    Vue.prototype.$API = API
  },
  router,
  store
}).$mount('#app')
